package com.itqf.interceptor;

import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;
import java.util.Date;

/**
 * projectName: springframeworkgp8
 *
 * @author: 赵伟风
 * time: 2021/8/3 17:00
 * description:
 */
public class UserInterceptor implements MethodInterceptor {

    /**
      * 代理方法
     * @param target  目标对象
     * @param method  目标方法 目标方法调用会触发当前代理方法
     * @param objects 目标方法的参数类型
     * @param methodProxy 代理方法
     * @return
     * @throws Throwable
     */
    @Override
    public Object intercept(Object target, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {

        //method.invoke(target, objects);
        //执行目标方法
        //增强功能
        System.out.println("方法进入时间:"+new Date());
        //利用代理方法触发目标方法
        methodProxy.invokeSuper(target,objects);

        System.out.println("方法完毕时间:"+new Date());

        return null;
    }
}
